"""
定义 __str__() 方法的主要目的是为了返回一个易读性强的字符串表示形式，让用户和开发者可以更加便捷地理解对象的内部结构和状态。
而 __repr__() 方法，通常被用于提供一种准确、清晰的、可用于重构的字符串表示形式，用于描述对象的内部结构和状态。
其实现应该能够准确地描述对象，可以是Python表达式，以便能够通过 eval() 函数恢复该对象。

在某些情况下，我们希望 __str__() 和 __repr__() 方法返回值相同，通常是因为我们发现相关信息已经足够简单并且易读。
这时候，我们可以只定义 __str__() 方法，而在 __repr__() 方法中直接调用 __str__() 方法来获取相同的字符串表示。
这种情况下，__repr__() 方法的主要作用是提供一种准确的可重构的字符串表示形式，同时也可以让代码更加简洁。

总之，仅在 __repr__() 方法中返回 __str__() 方法的结果，一般是因为两个方法的实现是相同的。
因为在大多数情况下，__str__() 方法的实现应当比 __repr__() 方法更加简单，并且有更好的可读性。
在这种情况下，使用相同的实现来同时满足两者的需求，可以减少多余的代码，并提高代码的可维护性。

"""


def __str__(self):
    if self._face == 1:
        face_str = 'A'
    elif self._face == 11:
        face_str = 'J'
    elif self._face == 12:
        face_str = 'Q'
    elif self._face == 13:
        face_str = 'K'
    else:
        face_str = str(self._face)
    return "%s%s" % (self._suit, face_str)


def __repr__(self):
    return self.__str__()